#!/bin/bash

# 检查 root 权限
if [ "$(id -u)" -ne 0 ]; then
    echo "请使用 root 用户（sudo）运行此脚本：sudo bash $0"
    exit 1
fi

# 检测 Debian 版本代号
VERSION_CODENAME=$(grep VERSION_CODENAME /etc/os-release | cut -d= -f2)
if [ -z "$VERSION_CODENAME" ]; then
    VERSION_CODENAME=$(lsb_release -cs 2>/dev/null)
fi
if [ -z "$VERSION_CODENAME" ]; then
    read -p "无法检测 Debian 版本代号，请输入（如 buster、bullseye、bookworm）: " VERSION_CODENAME
fi

# 镜像源列表
declare -A mirrors
mirrors["1"]="阿里云|http://mirrors.aliyun.com/debian/"
mirrors["2"]="清华大学|https://mirrors.tuna.tsinghua.edu.cn/debian/"
mirrors["3"]="中国科技大学|https://mirrors.ustc.edu.cn/debian/"
mirrors["4"]="华为云|https://repo.huaweicloud.com/debian/"
mirrors["5"]="网易|http://mirrors.163.com/debian/"
mirrors["6"]="腾讯云|http://mirrors.cloud.tencent.com/debian/"
mirrors["7"]="南京大学|http://mirror.nju.edu.cn/debian/"
mirrors["8"]="兰州大学|http://mirror.lzu.edu.cn/debian/"
mirrors["9"]="北京外国语大学|http://mirrors.bfsu.edu.cn/debian/"
mirrors["10"]="哈尔滨工业大学|http://mirrors.hit.edu.cn/debian/"
mirrors["11"]="吉林大学|http://mirrors.jlu.edu.cn/debian/"
mirrors["12"]="东软信息学院（沈阳）|http://mirrors.neusoft.edu.cn/debian/"

# 展示选择菜单
echo "请选择要切换的 Debian 镜像源（当前版本：$VERSION_CODENAME）："
for key in $(printf "%s\n" "${!mirrors[@]}" | sort -n); do
    echo "$key) ${mirrors[$key]%%|*}"
done

read -p "请输入数字选择（1-${#mirrors[@]}）: " choice
if [[ -z "${mirrors[$choice]}" ]]; then
    echo "无效选择，退出脚本。"
    exit 1
fi

NAME=${mirrors[$choice]%%|*}
URL=${mirrors[$choice]#*|}

# 备份旧 sources.list
BACKUP_FILE="/etc/apt/sources.list.bak.$(date +%Y%m%d%H%M%S)"
cp /etc/apt/sources.list "$BACKUP_FILE"
echo "已备份原 sources.list 到：$BACKUP_FILE"

# 写入新源
cat > /etc/apt/sources.list <<EOF
deb $URL $VERSION_CODENAME main contrib non-free non-free-firmware
deb $URL $VERSION_CODENAME-updates main contrib non-free non-free-firmware
deb $URL $VERSION_CODENAME-backports main contrib non-free non-free-firmware
deb $URL $VERSION_CODENAME-security main contrib non-free non-free-firmware
EOF

echo "已切换至镜像源：$NAME（$URL）"

# 更新软件列表
apt update
